#include <memory>
#include <iostream>
using namespace std;
int main()
{
    // std::shared_ptr：共享所有权的智能指针，多个 shared_ptr 可以指向同一内存，内存在最后一个 shared_ptr 被销毁时释放
    std::shared_ptr<int> p = std::make_shared<int>(42); //make_shared函数省略new
    {
        auto q = p; // 此时 p、q 同时持有资源
        // [...]
        // q 退出作用域，但资源仍然有效；因为 p 还活跃
    }
    *p = 56; // OK
    // p 退出作用域，它是唯一一个持有者，资源被释放
    return 0;
}
